Data Augmentation for LSTM and RNN Models

Machine Learning - টাইম সিরিজ (Time Series) Time Series Data Augmentation Techniques |
147
147

ডেটা অগমেন্টেশন হলো এমন একটি কৌশল, যা মডেল প্রশিক্ষণের সময় ডেটার বৈচিত্র্য বৃদ্ধি করতে সহায়ক হয়। সাধারণত, নিউরাল নেটওয়ার্ক মডেল, বিশেষ করে LSTM (Long Short-Term Memory) এবং RNN (Recurrent Neural Network) মডেল, প্রশিক্ষণের জন্য অনেক ডেটা প্রয়োজন। কিন্তু কখনও কখনও পর্যাপ্ত ডেটা পাওয়া কঠিন হতে পারে, অথবা ডেটা সঠিকভাবে ভারসামিত না হতে পারে। এই সমস্যা সমাধানের জন্য ডেটা অগমেন্টেশন ব্যবহার করা হয়, যা নতুন উদাহরণ তৈরি করে, যাতে মডেল আরও ভালোভাবে সাধারণীকরণ করতে পারে।

LSTM এবং RNN মডেলগুলি টাইম সিরিজ এবং সিকোয়েন্সিয়াল ডেটার জন্য ব্যবহৃত হয়, এবং তাদের জন্য ডেটা অগমেন্টেশন কিছুটা বিশেষ এবং টাইম সিরিজের প্রাকৃতিক বৈশিষ্ট্য বজায় রেখে কাজ করা উচিত।

ডেটা অগমেন্টেশন কৌশলসমূহ


১. টাইম সিরিজ ডেটার জন্য নোইজ (Noise) যোগ করা

বর্ণনা: টাইম সিরিজ ডেটায় কিছু পরিমাণ নোইজ যোগ করলে এটি নতুন উদাহরণ তৈরি করতে সহায়ক হতে পারে। নোইজ যোগ করা মডেলকে অপ্রত্যাশিত এবং অপ্রত্যক্ষ পরিবর্তনগুলি শিখতে সহায়ক করে, যা প্রকৃত বিশ্বে ঘটতে পারে।

কিভাবে করবেন:

  • সাধারণত গাউসিয়ান নোইজ (Gaussian noise) টাইম সিরিজ ডেটায় যোগ করা হয়।

উদাহরণ:

import numpy as np

# Example time series data
data = np.array([1, 2, 3, 4, 5, 6, 7])

# Add Gaussian noise
noise = np.random.normal(0, 0.1, data.shape)
augmented_data = data + noise

২. ডেটা শিফটিং (Data Shifting)

বর্ণনা: টাইম সিরিজ ডেটায় বিভিন্ন সময়ের শিফট তৈরি করা যেতে পারে, যা মডেলকে টাইম ডিপেনডেন্সি সম্পর্কে আরও ভালোভাবে শিখতে সাহায্য করবে। শিফটিং ডেটাকে একটি নতুন টাইম পয়েন্টে স্থানান্তরিত করে, এটি আরও বৈচিত্র্যময় ডেটা তৈরি করে।

কিভাবে করবেন:

  • ডেটার একটি ছোট অংশের সময়সীমা পরিবর্তন করুন বা শিফট করুন।

উদাহরণ:

# Shift the data by one step
shifted_data = np.roll(data, shift=1)

৩. টাইম সিরিজ রিস্যাম্পলিং (Time Series Resampling)

বর্ণনা: রিস্যাম্পলিং টাইম সিরিজ ডেটা থেকে নতুন উদাহরণ তৈরি করতে ব্যবহৃত হয়। এটি ডেটার ফ্রিকোয়েন্সি বাড়ানো বা কমানো হতে পারে, যেমন একটি দিন বা সপ্তাহের ডেটা থেকে আরও অনেক ছোট ফ্রিকোয়েন্সির ডেটা তৈরি করা।

কিভাবে করবেন:

  • ডেটার রিস্যাম্পলিংয়ের মাধ্যমে টাইম সিরিজের বৈচিত্র্য বাড়ানো যায়।

উদাহরণ:

import pandas as pd

# Sample time series data with daily frequency
data = pd.Series([10, 15, 20, 25, 30], index=pd.date_range('20230101', periods=5))

# Resampling to a different frequency (e.g., hourly)
resampled_data = data.resample('H').ffill()  # Forward fill to impute missing values

৪. টাইম সিরিজের জন্য উইন্ডো ফাংশন (Windowing)

বর্ণনা: উইন্ডো ফাংশন হল একটি কৌশল যেখানে টাইম সিরিজ ডেটাকে ছোট ছোট উইন্ডোতে ভাগ করা হয়, এবং প্রতিটি উইন্ডো একটি নতুন উদাহরণ হিসাবে গণ্য হয়। এটি LSTM এবং RNN মডেলগুলোর জন্য বিশেষভাবে উপকারী, কারণ এটি টাইম সিরিজের ছোট ছোট অংশগুলোতে সম্পর্ক শিখতে সহায়ক।

কিভাবে করবেন:

  • একটি নির্দিষ্ট উইন্ডো সাইজ নির্বাচন করুন এবং ডেটাকে ছোট ছোট উইন্ডোতে ভাগ করুন।

উদাহরণ:

# Create sliding windows of size 3
window_size = 3
windows = [data[i:i+window_size] for i in range(len(data)-window_size+1)]

৫. টাইম সিরিজ ডেটা স্কেলিং (Scaling and Normalization)

বর্ণনা: টাইম সিরিজ ডেটার জন্য স্কেলিং বা নর্মালাইজেশন প্রক্রিয়া ডেটার পরিসীমা একীভূত করতে সহায়ক। এই কৌশলটি মডেলকে বেশি সহজে শেখার সুযোগ দেয় এবং প্রশিক্ষণের সময় দ্রুত কনভার্জেন্স অর্জন করতে সাহায্য করে।

কিভাবে করবেন:

  • সাধারণত Min-Max Scaling বা Standardization (z-score) ব্যবহার করা হয়।

উদাহরণ:

from sklearn.preprocessing import MinMaxScaler

scaler = MinMaxScaler()
scaled_data = scaler.fit_transform(data.reshape(-1, 1))

৬. টাইম সিরিজ রিভার্সিং (Time Series Reversing)

বর্ণনা: টাইম সিরিজ ডেটার অভ্যন্তরীণ প্যাটার্ন বজায় রেখে সম্পূর্ণ সিরিজটি উল্টানো (reverse) করা যায়, যাতে মডেলটি সময়সীমার সাথে সম্পর্কিত প্যাটার্নের উপর ভিত্তি করে সিদ্ধান্ত নিতে শিখে। তবে, এই কৌশলটি সব ধরনের ডেটার জন্য উপযুক্ত নাও হতে পারে, কারণ এটি কিছু সিরিজের জন্য অযৌক্তিক হতে পারে।

কিভাবে করবেন:

  • সিরিজের আর্ডার উল্টানো (reversing the order).

উদাহরণ:

reversed_data = data[::-1]

৭. র্যান্ডম ড্রপ আউট (Random Dropout)

বর্ণনা: র্যান্ডম ড্রপ আউট হল একটি কৌশল যেখানে কিছু ডেটা পয়েন্ট র্যান্ডমভাবে বাদ দেওয়া হয়, যা মডেলকে অতিরিক্ত ফিটিং (overfitting) থেকে রক্ষা করতে সাহায্য করে এবং বৈচিত্র্য তৈরি করে।

কিভাবে করবেন:

  • কিছু অংশ র্যান্ডমভাবে বাদ দিয়ে মডেল প্রশিক্ষণ করান।

উদাহরণ:

dropout_percentage = 0.2
dropout_data = np.random.choice(data, size=int(len(data)*(1-dropout_percentage)))

সারাংশ

ডেটা অগমেন্টেশন হল একটি শক্তিশালী কৌশল যা LSTM এবং RNN মডেল প্রশিক্ষণের জন্য ডেটার বৈচিত্র্য বৃদ্ধি করে এবং মডেলকে বেশি সাধারণীকরণ করতে সাহায্য করে। টাইম সিরিজ ডেটার জন্য অগমেন্টেশন কৌশলগুলি, যেমন নোইজ যোগ করা, ডেটা শিফটিং, উইন্ডো ফাংশন ব্যবহার, এবং রিস্যাম্পলিং, টাইম সিরিজের প্যাটার্ন শিখতে মডেলকে সহায়ক করে। ডেটার স্কেলিং এবং রিভার্সিংও একটি কার্যকর কৌশল হতে পারে। এসব কৌশল ব্যবহার করে LSTM এবং RNN মডেলের পারফরম্যান্স বৃদ্ধি করা যায়।

Content added By
Promotion